From d868600a3f437750bc44a783d677a25a48100096 Mon Sep 17 00:00:00 2001
From: Eric Le Bihan <eric.le.bihan.dev@free.fr>
Date: Sun, 4 Dec 2016 19:11:25 +0100
Subject: [PATCH] No runtime tests for type sizes

Replace build and execution of runtime test programs for determining
some type sizes of the target with compile time test programs.

This improves support for cross-compilation.

Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr>
---
 configure | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/configure b/configure
index 4da9c5e..b5926ca 100755
--- a/configure
+++ b/configure
@@ -157,10 +157,28 @@ choose () {
 
 trytypesize () {
   echo "Checking size of $3..."
-  $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO $LDFLAGS_AUTO -o trysizeof$1 src/sysdeps/trysizeof$1.c
-  type_size=$(./trysizeof$1) || fail "$0: unable to determine size of $3"
+  r=false
+  type_size=0
+  while true; do
+    cat<<EOF>trysizeof$1.c
+#include <sys/types.h>
+
+int main(void)
+{
+  static int v = 1 / !!((sizeof($3) == $type_size));
+  return 0;
+}
+EOF
+    if $CC_AUTO $CPPFLAGS_AUTO $CFLAGS_AUTO $LDFLAGS_AUTO -o trysizeof$1 trysizeof$1.c 2>/dev/null; then
+        r=true
+        break
+    fi
+    type_size=$(expr $type_size + 1)
+    test $type_size -le 16 || break
+  done
+  test $r = true || fail "$0: unable to determine size of $3"
   type_bits=$(expr 8 \* $type_size)
-  rm -f trysizeof$1
+  rm -f trysizeof$1 trysizeof$1.c
   echo "sizeof$1: $type_size" >> $sysdeps/sysdeps
   echo "#define ${package_macro_name}_SIZEOF$2 $type_size" >> $sysdeps/sysdeps.h
   echo "#define ${package_macro_name}_$2_BITS $type_bits" >> $sysdeps/sysdeps.h
-- 
2.5.5

